package com.cn.icss.utils;


import com.twmacinta.util.MD5;
import org.apache.commons.lang3.StringUtils;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;
import java.util.Base64;

/**
 * @中软华腾软件系统有限公司,未经授权不得擅自传播
 * @类描述: 加密算法 MD5(key的base64+参数)
 * @类名称:EncryUtils
 * @作者: Administrator
 * @编辑时间: 2020/04/21 17:59
 * @版本: 1.0
 */
public class StreamEncryUtils {

    // 使用key与params进行混合加密
    public static String encryStream(String key,String... params){
        if(StringUtils.isNotBlank(key)){
            Base64.Encoder encoder = Base64.getEncoder();
            try {
                byte[] textByte = key.getBytes("UTF-8");
                String strcode = encoder.encodeToString(textByte);
                StringBuffer sb = new StringBuffer(strcode);
                Arrays.stream(params).forEach((x)->{
                    sb.append(x);
                });
                // 最后使用MD5加密成32位小写
                MD5 md5 = new MD5();
                md5.Update(sb.toString(),"UTF-8");
                return md5.asHex();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    public static void main(String[] args) {
        String key = "zrht";
        String tokenId = "6666";
        System.out.println(encryStream(key,tokenId)); //3d42315f98fc00760fa554567b0c1eae
    }

}
